#include "set.h"

// SetIterator {

void * setIteratorData(const SetIterator * iterator) {
	return skipListIteratorData(iterator);
}

SetIterator * setIteratorPrev(const SetIterator * iterator) {
	return skipListIteratorPrev(iterator);
}

SetIterator * setIteratorNext(const SetIterator * iterator) {
	return skipListIteratorNext(iterator);
}

// }

// Set {

Set * setNew(FunctionLessThan lessThan, FunctionOnErased onErased) {
	return skipListNew(lessThan, onErased);
}

void setDelete(Set * set) {
	skipListDelete(set);
}

SetIterator * setBegin(const Set * set) {
	return skipListBegin(set);
}

SetIterator * setEnd(const Set * set) {
	return skipListEnd(set);
}

int setIsEmpty(const Set * set) {
	return skipListIsEmpty(set);
}

void setClear(Set * set) {
	skipListClear(set);
}

SetIterator * setInsert(Set * set, const void * data) {
	return skipListInsert(set, data);
}

SetIterator * setErase(Set * set, const void * data) {
	return skipListErase(set, data);
}

SetIterator * setEraseIf(Set * set, const void * key, FunctionLessThan lessThanKey, FunctionLessThan keyLessThan) {
	return skipListEraseIf(set, key, lessThanKey, keyLessThan);
}

SetIterator * setFind(const Set * set, const void * data) {
	return skipListFind(set, data);
}

SetIterator * setFindIf(const Set * set, const void * key, FunctionLessThan lessThanKey, FunctionLessThan keyLessThan) {
	return skipListFindIf(set, key, lessThanKey, keyLessThan);
}

void setPrint(const Set * set) {
	skipListPrint(set);
}

void setPrintSize(const Set * set) {
	skipListPrintSize(set);
}

// }

// SetForInt {

Set * setForIntNew() {
	return skipListForIntNew();
}

SetIterator * setForIntInsert(Set * set, int data) {
	return skipListForIntInsert(set, data);
}

SetIterator * setForIntErase(Set * set, int data) {
	return skipListForIntErase(set, data);
}

SetIterator * setForIntFind(const Set * set, int data) {
	return skipListForIntFind(set, data);
}

// }

// SetForUInt {

Set * setForUIntNew() {
	return skipListForUIntNew();
}

SetIterator * setForUIntInsert(Set * set, unsigned int data) {
	return skipListForUIntInsert(set, data);
}

SetIterator * setForUIntErase(Set * set, unsigned int data) {
	return skipListForUIntErase(set, data);
}

SetIterator * setForUIntFind(const Set * set, unsigned int data) {
	return skipListForUIntFind(set, data);
}

// }
